package fr.emn.nuitinfo.model.persistence.impl;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

import fr.emn.nuitinfo.model.Utilisateur;
import fr.emn.nuitinfo.model.interfaces.IUtilisateur;
import fr.emn.nuitinfo.model.persistence.IDAO;

public class UtilisateurMockDAO implements IDAO<IUtilisateur> {

	static List<IUtilisateur> users = new ArrayList<IUtilisateur>();

	@Override
	public void create(String utilisateur) {

		Gson gson = new Gson();
		IUtilisateur user = gson.fromJson(utilisateur, Utilisateur.class);
		users.add(user);
	}

	@Override
	public IUtilisateur retrieveByName(String name) {

		for (IUtilisateur user : users) {
			if (user.getUsername().equals(name)) {
				return user;
			}
		}

		return users.get(0);

	}

	@Override
	public void update(String nom, String Utilisateur) {
		Gson gson = new Gson();
		boolean trouve = false;
		for (IUtilisateur user : users) {
			if (user.getUsername().equals(nom)) {
				user = gson.fromJson(Utilisateur, Utilisateur.class);
				trouve = true;
				break;
			}
		}
		if (!trouve) {
			IUtilisateur user = gson.fromJson(Utilisateur, Utilisateur.class);
			users.add(user);
		}
	}

	@Override
	public void remove(String name) {

		for (IUtilisateur user : users) {
			if (user.getUsername().equals(name)) {
				users.remove(user);
				break;
			}
		}
	}

	@Override
	public List<IUtilisateur> retrieveAll() {

		if (users.isEmpty()) {
			users.add(new Utilisateur("Geek", "Student Inside", "GSI",
					"gsiemn@googlegroups.com", "gsi"));

			users.add(new Utilisateur("Tata", "Toto Inside", "Tutu",
					"gsiemn@googlegroups.com", "tutu"));
		}
		return users;
	}

}
